iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0
Modern Web

前端工程師30天 WebRTC + Firebase 視訊通話原理到實作系列 第 11

[Day11] RTCPeerConnection - RTCIceServer NAT 網絡地址轉換

  • 分享至 

  • xImage
  •  

這篇文章主要是要通過學習 NAT 了解在不同設備之間進行連接時可能遇到的挑戰。

NAT是什麼

NAT,全稱為 Network Address Translation(網絡地址轉換),
是一種將內部 IP 與外部 IP 互相轉換之技術。

隨著互聯網的迅速增長,為了解決 IPv4 地址有限的問題,而產生 NAT 技術使得多個裝置可以共享單一公共 IPv4 地址,節省了 IP 資源,並延長了 IPv4 地址的使用壽命。NAT 可以將你家或公司內部的設備,像是電腦、手機等,的私人地址轉換成外部網路的公共地址,這樣可以節省公共地址的使用,讓更多人可以連上互聯網。

最常見的 NAT 設備就是家用路由器(Home Routers)讓多個內部設備使用不同的內部IP地址(例如192.168.0.x),但它們共享相同的公共IP地址(例如203.0.113.1)。NAT通過轉換內部設備的地址,讓它們能夠與外部網絡溝通。除此之外防火牆通常包含NAT功能,以增加網絡安全性並控制內部設備的訪問外部網絡。

https://ithelp.ithome.com.tw/upload/images/20230923/20151124iPQNQsb1oL.jpg

圖片來源:自製

NAT的類型

不同類型的 NAT 可能導致不同的連接問題,並需要不同的解決方法。以下是一些常見的NAT類型:

  • Full Cone NAT(全錐形NAT)

    允許外部主機通過 port 訪問內部主機,並在內部主機的通信中保持相同的外部 port 。

  • Restricted Cone NAT(受限錐形NAT)

    限制了外部主機只能回應內部主機的通信,而不能主動發起通信。這可能需要使用STUN 服務來穿越NAT。

  • Port Restricted Cone NAT(端口受限錐形NAT)

    不僅限制了外部主機的 IP 地址,還限制了port 。對於WebRTC,通常需要 STUN 服務來克服這種NAT。

  • Symmetric NAT(對稱NAT)

    這是最複雜的NAT類型,它為每個外部目標分配不同的外部 IP 和端口,通常需要使用 TURN 服務來處理對稱 NAT。

NAT 潛在問題

對於 WebRTC 來說,Full Cone NAT 是最友好的 NAT 類型,而其他 NAT 類型可能需要使用 ICE 協議、STUN 和 TURN 來克服相關問題。

對於 WebRTC 來說,兩個瀏覽器嘗試建立連接時若是私有 IP 地址會有無法直接通信的問題。為了克服這一問題,WebRTC 使用 RTCIceServer 來幫助瀏覽器發現最合適的路徑,以解決 NAT 和防火牆的障礙,確保 WebRTC 通信可以順利進行

WebRTC 的 ICE 協議包括 STUN 和 TURN 協議,用於找到可用且最佳的數據通道連接。這套框架目的是為了克服 NAT 和防火牆的障礙,確保 WebRTC 瀏覽器間的實時通信能夠順暢運作。

還記的前面有題到 NAT 是為了防止 IPv4 位址的枯竭的解決方案,但隨著未來 IPv6 位址的推廣,NAT 不再被需要。

重點整理

  • NAT是地址轉換技術,用於共享公共IP地址,節省 IP 資源。
  • Full Cone NAT 對 WebRTC 友好,其他 NAT 類型需要 ICE、STUN 和 TURN 協議。
  • WebRTC 使用 RTCIceServer、ICE協議克服NAT和防火牆障礙,實現實時通信。

這篇文章簡單的了解 NAT 也有提到對於連線上的困難下篇會再說說 STUN 和 TURN 以及 ICE 是什麼他是如何解決 IP 地址連線上的問題

參考資料

What is NAT and its Types? Best Explained - 2023 (nwkings.com)
Web 前端 WebRTC 攻略: NAT 穿越與 ICE - 閱坊 (readfog.com)
講得很清楚👉cs.nccu.edu.tw/~lien/Writing/NGN/firewall.htm


上一篇
[Day10] RTCPeerConnection - SDP 與建立連線✨
下一篇
[Day12] RTCPeerConnection - RTCIceServer STUN/TURN 穿越 NAT 防火牆
系列文
前端工程師30天 WebRTC + Firebase 視訊通話原理到實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言